/*
 * @Author: WuFeng <763467339@qq.com>
 * @Date: 2024-05-10 17:32:34
 * @LastEditTime: 2025-10-16 11:28:21
 * @LastEditors: WuFeng <763467339@qq.com>
 * @Description: 默认配置
 * @FilePath: \vue-code-design\config\defaultOptions.js
 * @Copyright 版权声明
 */

// 组件配置项的默认属性值
const DEFAULT_OPTIONS = {
  isDebugger: false, // 是否为调试模式， 目前用于代码生成实时预览
  MODULE_VALUE: '', // 当前模块名称
  createDrawerWidth: '30%', // 新建 抽屉弹窗宽度
  updateDrawerWidth: '30%', // 编辑 抽屉弹窗宽度
  detailDrawerWidth: '30%', // 详情 抽屉弹窗宽度
  // 自动加载数据
  autoOnLoadData: true,
  // 在哪个生命周期内自动加载数据 : created / activated
  autoOnLoadDataHook: 'activated',
  // 页面title, showHeader 为 true 时生效
  title: '页面标题',
  // 结果展示区标题
  resultTitle: '列表',
  // 是否展示 header
  showHeader: false,
  // 是否展示 查询条件区域
  showSearch: true,
  // 查询条件区域的表单是否为 - 行内表单域
  searchFormInline: false,
  // 搜索条件标题的宽度
  searchLabelWidth: '110px',
  // 搜索的文字
  searchBtnText: '查询',
  // 清空的文字
  emptyBtnText: '重置',
  // 点击【重置】按钮后后是否自动重载列表
  emptyBtnAutoReload: true,
  // 是否展示 查询条件区域 - 【展开/折叠】 按钮
  searchShowMoreBtn: true,
  // 功能按钮区 - 导出 按钮是否展示
  showExportBtn: false,
  // 功能按钮区 - 列设置 按钮是否展示
  showColumnSetBtn: false,
  // 是否展示 分页
  showPage: true,
  // 是否显示表格 行多选， 默认值： false ， 勾选的同时会回调 selectionChange 方法返回当前选中的数据
  selection: false,
  // 是否显示表格 索引/序号 列， 默认值： false
  index: false,
  // 设置表格的序号的标题,默认为： 序号
  indexLabel: '序号',
  // 表格操作列 - 是否展示操作列
  showHandleColumn: true,
  // 表格操作列 - 宽度
  handleColumnWidth: '150',
  // 表格操作列 - 新建按钮是否展示
  showCreateBtn: true,
  /**
   * 表格操作列 - 新建按钮展示 文字
   * @type String
   */
  createBtnText: '新建',
  /**
   * 表格操作列 - 详情按钮是否展示
   * @type boolean   true | false
   * @type function (row = 当前行的数据)  return true | return false
   */
  showDetailBtn: true,
  /**
   * 表格操作列 - 详情按钮展示 文字
   * @type String
   */
  detailBtnText: '查看',
  /**
   * 表格操作列 - 编辑按钮是否展示
   * @type boolean   true | false
   * @type function (row = 当前行的数据)  return true | return false
   */
  showUpdateBtn: true,
  /**
   * 表格操作列 - 编辑按钮展示 文字
   * @type String
   */
  updateBtnText: '编辑',
  /**
   * 表格操作列 - 删除按钮是否展示
   * @type boolean   true | false
   * @type function (row = 当前行的数据)  return true | return false
   */
  showDeleteBtn: true,
  /**
   * 表格操作列 - 删除按钮展示 文字
   * @type String
   */
  deleteBtnText: '删除',
  // table 属性
  tableAttr: {
    border: true, // 是否带有纵向边框
    fit: true, // 列的宽度是否自撑开
    showHeader: true, // 是否显示表头
    highlightCurrentRow: false, // 是否要高亮当前行
    rowKey: '', // 行数据的 Key，用来优化 Table 的渲染； 在使用reserve-selection功能与显示树形数据时，该属性是必填的。 类型为 String 时，支持多层访问：user.info.id，但不支持 user.info[0].id，此种情况请使用 Function。
    defaultExpandAll: false, // 是否默认展开所有行，当 Table 包含展开行存在或者为树形表格时有效
    lazy: false, // 是否懒加载子节点数据
    load: () => {}, // 加载子节点数据的函数，lazy 为 true 时生效，函数第二个参数包含了节点的层级信息
    // 渲染嵌套数据的配置选项
    treeProps: {
      children: 'children',
      hasChildren: 'hasChildren'
    },
    // 行的 className 的回调方法，也可以使用字符串为所有行设置一个固定的 className。 function({ row, rowIndex }) / string
    rowClassName: () => {}
  },
  // 字段配置
  column: [],
  // 表单配置
  form: {
    // 表单域标签的位置
    labelPosition: 'right',
    // 用于控制该表单内组件的尺寸 ：	'large' | 'default' | 'small'
    size: 'default',
    // 表单标签宽度，例如 '50px'。 作为 Form 直接子元素的 form-item 会继承该值。 可以使用 auto。	string | number
    labelWidth: 120,
    // 字段名后添加冒号
    showColon: true
  }
}

// form 默认属性值
const COLUMN_FORM_DEFAULT_OPTIONS = {
  show: true, // 在表单组件内是否显示
  type: 'text' // 在表单内字段展现形式： text 、 textarea 、 number 、 select 、 cascader 、 selectMultiple 、 checkbox 、 radio 、 date 、 daterange 、 datetime 、 datetimerange 等
  // placeholder: '' // 输入框占位文本	string
}

// column 默认属性值
const COLUMN_DEFAULT_OPTIONS = {
  show: true, // 在列表中是否展示
  label: '', // 列标题
  prop: '', // 列标题的内容属性名称
  fixed: false, // 列是否固定在左侧或者右侧。 `true` 表示固定在左侧
  width: 120, // 对应列的宽度
  minWidth: 120, // 对应列的最小宽度，与 width 的区别是 width 是固定的，minWidth 会把剩余宽度按比例分配给设置了 minWidth 的列
  align: 'center', // 对齐方式
  showOverflowTooltip: true, // 当内容过长被隐藏时显示 tooltip
  search: false, // 是否在搜索区作为查询条件展示， 默认值： false
  searchType: 'text', // 定义搜索框的类型， 默认值： text ， 枚举： text 、 select 、 selectMultiple 、 checkbox 、 radio 、 daterange 、 datetime、date、cascader
  searchDefaultValue: '', // e搜索项初始化值
  searchPlaceholder: ``, // 搜索项辅助文字
  searchTip: ``, // 辅助提示语
  searchTipPlacement: 'left', // 提示语的方向
  /*
   * 选项数据源
   *[
      {
        value: 'fixed',
        label: '固定选项'
      },
      {
        value: 'api',
        label: '数据源'
      },
      {
        value: 'dict',
        label: '接口字典'
      }
    ]
   */
  dictDataSource: 'fixed',
  // 尝试转换value值为 ： '' 、 number 、 string
  dictDataTypeConvert: '',
  // dictDataSource === api
  dictDataSourceApi: {
    method: '',
    url: '',
    label: '',
    value: ''
  },
  // 字典key，默认为字段标识  dictDataSource === dict
  dictDataFlag: '',
  // searchType / form.type 如果为 checked 、 radio 、 select 等需要枚举的配置此值
  dictData: [
    {
      label: '',
      value: ''
    },
    {
      label: '',
      value: ''
    }
  ],
  // 校验规则
  rules: [
    {
      type: '',
      message: ''
    }
  ],
  // 表单配置
  form: COLUMN_FORM_DEFAULT_OPTIONS
}

// 组件配置项的默认属性值
exports.DEFAULT_OPTIONS = DEFAULT_OPTIONS
// form 默认属性值
exports.COLUMN_FORM_DEFAULT_OPTIONS = COLUMN_FORM_DEFAULT_OPTIONS
// column 默认属性值
exports.COLUMN_DEFAULT_OPTIONS = COLUMN_DEFAULT_OPTIONS